<?php
/*
 *  @autor: peter dobsa
 */
class Users_model extends CI_Model
{
	
	//nacita z db vsetkych pouzivatelov
	//vrati: pole vsetkych pouzivatelov
	function GetUsers()
	{
		$q = $this->db->get('users');
		return $q->result();
	}
	
	//vrati pouzivatela podla id-cka ak existuje / inak vrati 'null' 
	function GetUserById($id)
	{
		$q = $this->db->get_where('users', array('id' => $id));
		return $q->num_rows() == 0 ? null : $q->first_row();
	}
	
	//vrati pouzivatela podla username / ak take neexistuje vrati 'null'
	function GetUserByName($username)
	{
		$q = $this->db->get_where('users', array('user_name' => $username));
		return $q->num_rows() == 0 ? null : $q->first_row();
	}
	
	//vrati zoznam pouzivatelov s danou privilegiou ako pole
	function GetUsersByPrivileges($privilege)
	{
		$q = $this->db->get_where('users', array('user_privilleges' => $privilege));
		return $q->result();
	}
	
	//prida noveho pouzivatela
	//vstup: asociativne pole, kde klucom je meno stlpca v databaze
	//vrati uspesnost operacie ako boolean hodnotu
	function InsertUser($user)
	{
		if (!array_key_exists('user_name', $user) || !array_key_exists('user_password', $user))  
		{
			return false;
		}
		if ($this->GetUserByName($user['user_name']) != null) return false;
		return $this->db->insert('users', $user);
	}
	
	//aktualizuje pouzivatela s danym id-ckom
	//dostane ako vstup id pouzivatela a nove udaje ako asociativne pole pri inserte
	//vrati uspesnost operacie
	function UpdateUserById($id, $data)
	{
		$this->db->where('id', $id);
		return $this->db->update('users', $data);
	}
	
	//aktualizuje pouzivatela s danym menim
	//dostane ako vstup id pouzivatela a nove udaje ako asociativne pole pri inserte
	//vrati uspesnost operacie
	function UpdateUserByName($name, $data)
	{
		$this->db->where('user_name', $name);
		return $this->db->update('users', $data);
	}
	
	//zmaze pouzivatela s danym idckom
	function RemoveUser($id)
	{
		$this->db->delete('users', array('id' => $id));
	}	
	
}